/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.commands;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import src.Command;
import src.ListaUsuarios;
import src.Permisos;
import src.Usuario;
import src.exceptions.eInsertarUsuario;
import src.exceptions.eSessionNoValida;

/**
 *
 * @author pabloavila
 */

/*
 * Un usuario se añade si:
 * 1) No esta en la lista
 * 2) Intenta entrar como GUEST y no esta en la lista
 * 3) El admin lo decide desde el menu de administracion
 */
public class DoAddUser implements Command{

    // Atributos: para añadir un user necesitamos el objeto Usuario
    private String n;
    ListaUsuarios lu;
    HttpSession ses;
    

    public DoAddUser(HttpServletRequest request, HttpServletResponse response){
        // Intentamos coger los parametros que nos interesan
        // Que son un usuario y la lista de usuarios
        this.ses = request.getSession(false);
        if (this.ses != null){
        n = (String) ses.getAttribute("add"); // OJO
        this.lu = (ListaUsuarios) ses.getAttribute("ses_list");
        }
    
    }

    @Override
    public void Execute() {
        // Añadir el usuario a la lista
        try {
            if (this.ses != null && this.n != null && !this.n.equals("")){
                this.lu.insertarUsuario(this.n);
                ses.setAttribute("ses_list", lu);
                ses.setAttribute("ses_notify","Usuario insertado con exito");
                ses.setAttribute("ses_sign",true);

                }
            else {
                ses.setAttribute("ses_notify", "Error al crear el usuario");
                ses.setAttribute("ses_sign",false);
                throw new eSessionNoValida("Error al insertar usuario");
            }
                

            }
        catch (eInsertarUsuario ex) {
            // Coger la excepcion
        }
        catch (eSessionNoValida ex){
            // Coger la excepcion
        }
                           
    } 

}
